// src/renderer/utils/webSocketManager.ts
import { ref } from "vue";

const socket = ref(null); // 创建一个响应式引用来存储 WebSocket 实例
const isConnected = ref(false); // 标记 WebSocket 是否已连接

const connect = () => {
    if (socket.value && isConnected.value) {
        console.log("WebSocket 已连接，无需重复连接");
        return; // 如果已连接，则不再创建新的连接
    }

    console.log("尝试连接 WebSocket...");

    // 创建新的 WebSocket 实例  
    socket.value = new WebSocket("ws://127.0.0.1:8092/websocket/1");

    // 监听 WebSocket 打开事件  
    socket.value.addEventListener("open", () => {
        console.log("WebSocket连接已打开");
        isConnected.value = true; // 更新连接状态  
    });

    // 监听 WebSocket 消息事件  
    socket.value.addEventListener("message", (event) => {
        const message = JSON.parse(event.data); // 解析消息
        // 处理消息逻辑
    });

    // 监听 WebSocket 关闭事件  
    socket.value.addEventListener("close", () => {
        console.log("WebSocket连接已关闭");
        isConnected.value = false; // 更新连接状态  
    });

    // 监听 WebSocket 错误事件  
    socket.value.addEventListener("error", (error) => {
        console.error("WebSocket发生错误:", error);
    });
};

const closeConnection = () => {
    if (socket.value) {
        socket.value.close(); // 关闭 WebSocket 连接  
        socket.value = null; // 清空 socket 实例
        isConnected.value = false; // 更新连接状态
    }
};

export { socket, isConnected, connect, closeConnection };